package com.wjm.api.socket;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
 * Data:2022年07月24日
 * Author:wjm
 * Content: C-S通信的客户端
 *
 *  简易聊天室
 *
 *
 */
public class Cilent {
    public static void main(String[] args) {
        //申明客户端变量
        Socket socket = null;

        try {

            //创建客户端对象
            socket = new Socket("127.0.0.1",6666);


            //获取输出流
            OutputStream out = socket.getOutputStream();
            //将字节流转换为字符流
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(out,"utf-8"),true);
            //写数据
            writer.println("你好，服务端，我是cilent");
            System.out.println("客户端已启动！消息已发送。");

//            //获取输出流
//            OutputStream out = socket.getOutputStream();
//            //将字节流转换为字符缓冲流
//            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out,"utf-8"));
//            //写数据
//            writer.write("你好，服务端，我是cilent");
//            //如果不换行的话，服务端的readLine方法不能够识别到你这个语句是什么时候结束
//            writer.newLine();
//            writer.flush();
//            System.out.println("客户端已启动！消息已发送。");


            //获取输入流，用于读取服务端发的消息
            InputStream in = socket.getInputStream();
            //将字节流转换为字符缓冲流
            BufferedReader reader = new BufferedReader(new InputStreamReader(in,"utf-8"));
            //读取获得的内容
            String len = reader.readLine();
            System.out.println("服务端说:"+len);


            /*
             * 简易聊天室
             *
             * 与客户端进行发消息和读消息
             * */
            Scanner scanner = new Scanner(System.in);
            String str = null;
            do {
                //先给服务端发消息
                str = scanner.next();
                writer.println(str);

                //读取服务端回的消息
                len = reader.readLine();
                System.out.println("服务端说："+len);
            }while (!str.equals("exit"));//当客户端发送exit时结束对话


//            //简易聊天室，使用BufferedWriter的发生
//            Scanner scanner = new Scanner(System.in);
//            String str = null;
//            do {
//                //先给服务端发消息
//                str = scanner.next();
//                writer.write(str);
//                //如果不换行的话，服务端的readLine方法不能够识别到你这个语句是什么时候结束
//                writer.newLine();
//                writer.flush();
//
//                //读取服务端回的消息
//                len = reader.readLine();
//                System.out.println("服务端说："+len);
//            }while (!str.equals("exit"));//当客户端发送exit时结束对话



        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
